SET QUOTED_IDENTIFIER OFF
GO
SET ANSI_NULLS OFF
GO

CREATE PROCEDURE [dbo].[SP_CONV_MONE_Q06]      
/*------------------------------------------------------*/        
/*---- Empresa           : OFISIS S.A.              ----*/        
/*---- Cliente           : OFISIS S.A.              ----*/        
/*---- Nombre FU         : SP_CONV_MONE_Q06         ----*/        
/*---- Desarrollado por  : Jose Alberto Guevara(JAG)----*/        
/*---- Fecha Creaci?n    : 07/11/2003               ----*/        
/*---- Base de Datos     : SLQ Server               ----*/        
/*---- Versi?n           : 8.0                      ----*/        
/*------------------------------------------------------*/        
/*---Modificado 1 por     : PERCY GARCIA            ----*/      
/*---Fecha Modificaci?n   : 04/06/2004              ----*/      
/*---Detalle Modificaci?n : SE AGREGO ROUND         ----*/      
/*------------------------------------------------------*/        
/*--- Drop PROCEDURE SP_CONV_MONE_Q06               ----*/      
/*--- Grant All on SP_CONV_MONE_Q06 To Public       ----*/      
/*--- SP_CONV_MONE_Q06 '01','LIB',1,'PAC','COM',0.64,'2002/11/15',00000,0 ONV OUTPUT---*/      
/*--- SP_CONV_MONE_Q06 '01','SOL',1,'PAC','COM',1,'2003/02/07',1500,0  ONV OUTPUT---*/      
/*------------------------------------------------------*/        

  @ISCO_EMPR            TD_VC_002,      
  @ISCO_MONE_ORIG TD_VC_003,      
  @INNU_CNTB_EMPR       TD_IN_001_CONT,      
  @ISTI_CAMB_0001 TD_VC_003,      
  @ISTI_CAMB_0002 TD_VC_003,      
  @INFA_CAMB_0001       TD_NU_015_006,       
  @IDFE_CAMB  TD_DT_001,      
  @INIM_ORIG   TD_NU_016_004,      
  @ISTI_ORIG            TD_VC_001, -- Invocado por (A)pt o (P)rocedure      
  @VSST_TIPO_CAMB TD_VC_003,      
  @ONIM_CONV            TD_NU_016_004 OUTPUT,         
  @ONFA_CAMB_0002       TD_NU_015_006 OUTPUT        
        
      
AS      
Begin      
  Declare      
  @VSCO_MONE_DEST  TD_VC_003,      
  @VSCO_MON1       TD_VC_003,      
  @VSCO_MONE_BAS1  TD_VC_003,      
  @VSTI_OPE1       TD_VC_001,      
  @VSCO_MON2       TD_VC_003,      
  @VSCO_MONE_BAS2  TD_VC_003,      
  @VSTI_OPE2       TD_VC_001,      
  @VNFA_CAMB_0002  TD_NU_015_006,      
  @VNIM_CONV       TD_NU_016_004      
      
  ---- Verificamos si ambas monedas son iguales      
  Select @VSCO_MONE_DEST = CO_MONE      
  From TTCNTB_EMPR       
  Where CO_EMPR = @ISCO_EMPR      
  and NU_CNTB_EMPR = @INNU_CNTB_EMPR      
      
  If @ISCO_MONE_ORIG !=  @VSCO_MONE_DEST      
  Begin      
    ----  Recupero monedas      
    Select @VSCO_MON1 = CO_MON1,      
    @VSCO_MONE_BAS1 = CO_MONE_BAS1,      
           @VSTI_OPE1 = TI_OPE1,      
    @VSCO_MON2 = CO_MON2,      
           @VSCO_MONE_BAS2 = CO_MONE_BAS2,      
    @VSTI_OPE2 = TI_OPE2      
    From   TMCONV_MONE       
    Where  CO_MONE_ORIG   = @ISCO_MONE_ORIG      
    And    CO_MONE_DEST   = @VSCO_MONE_DEST       
      
    ---- Solo convierte para Paso 1      
    If @VSCO_MON2 is null and @INIM_ORIG > 0 and @INFA_CAMB_0001 > 0      
    Begin      
      If @VSTI_OPE1 = 'M'      
        Select @VNIM_CONV  =  Round(@INIM_ORIG * IsNull(@INFA_CAMB_0001, 1), 2)      
      Else      
        Select @VNIM_CONV  =  Round(@INIM_ORIG / IsNull(@INFA_CAMB_0001, 1), 2)      
    End      
      
    ---- Convierte cuando tiene Paso 1 y Paso 2      
    If @VSCO_MON1 is not null and @VSCO_MON2 is not null and @INIM_ORIG >0 and @INFA_CAMB_0001 >0      
    Begin      
    
      Select @VNFA_CAMB_0002 = 1            
      If @VSTI_OPE1 = 'M'      
        Select @VNIM_CONV  =  Round(@INIM_ORIG * @INFA_CAMB_0001, 2)      
      Else      
        Select @VNIM_CONV  =  Round(@INIM_ORIG / @INFA_CAMB_0001, 2)      
      
     IF @VSST_TIPO_CAMB = 'TRA'      
      BEGIN      
      Select @VNFA_CAMB_0002 =       
          IsNull(( Case  @ISTI_CAMB_0002      
             When  'COM' Then FA_CMPR_OFIC      
             Else   FA_VNTA_OFIC       
      End ), 1)      
      From    TCFACT_CAMB      
      Where   CO_MONE      = @VSCO_MON2      
      And     CO_MONE_BASE = @VSCO_MONE_BAS2      
      And     FE_CAMB      = @IDFE_CAMB      
      END      
      
     ELSE IF @VSST_TIPO_CAMB = 'PRO'      
      BEGIN      
      Select @VNFA_CAMB_0002 = IsNull((Case  @ISTI_CAMB_0002      
             When  'COM' Then FA_CAMB_CMPR      
             Else   FA_CAMB_VNTA       
        End ), 1)      
      From    TCFACT_PRME      
      Where   co_empr     = @ISCO_EMPR      
      and CO_MONE    = @VSCO_MON2      
      And     CO_MONE_BASE = @VSCO_MONE_BAS2      
      And     NU_ANNO    = DATEPART(yy,@IDFE_CAMB)      
      AND     NU_MESE    = DATEPART(M,@IDFE_CAMB)      
      END      
      
      ELSE IF @VSST_TIPO_CAMB = 'CIE'      
      BEGIN      
      Select @VNFA_CAMB_0002 =       
           IsNull((Case  @ISTI_CAMB_0002      
             When  'COM' Then FA_CAMB_CMPR      
             Else   FA_CAMB_VNTA       
      End ), 1)      
      From    TCFACT_CIER      
      Where   CO_MONE      = @VSCO_MON2      
      And     NU_ANNO    = DATEPART(yy,@IDFE_CAMB)      
      AND     NU_MESE    = DATEPART(M,@IDFE_CAMB)      
      END      
      
       
      If IsNull(@VNFA_CAMB_0002,0) > 0      
      Begin      
        If @VSTI_OPE2 = 'M'      
          Select @VNIM_CONV  =  Round(@VNIM_CONV * @VNFA_CAMB_0002, 2)      
        Else      
          Select @VNIM_CONV  =  Round(@VNIM_CONV / @VNFA_CAMB_0002, 2)      
      End       
      Else      
        Select @VNIM_CONV = 0      
      End      
    ---- Si importe original es 0      
    If @INIM_ORIG = 0      
      Select @VNIM_CONV = 0      
    End      
      
  If @ISCO_MONE_ORIG =  @VSCO_MONE_DEST      
     Select @VNIM_CONV  =  @INIM_ORIG      
    
      
 If RTRIM(IsNull(@VSCO_MON2, '')) = ''    
 Select @VNFA_CAMB_0002 = NULL    
      
   If @ISTI_ORIG = 'A'      
      Select @VNIM_CONV      
   Else      
      Select @ONIM_CONV = @VNIM_CONV      
      Select @ONFA_CAMB_0002 = @VNFA_CAMB_0002    
        
End      
      
Return      
/*----------------fin Funcion---------------------------*/        


GO
